package com.itheima.pojo;

import com.baomidou.mybatisplus.annotation.*;
import lombok.Data;

import java.util.Date;

@TableName("tb_user") // 指定表名, 全局配置中添加表前缀
@Data
public class User {
    /**
     * TableId这个属性所对应列（字段）是一个主键
     * value=如果属性名与字段表不一致时使用，类似取别名
     * type=指定主键生成策略,6种
     */
    @TableId(type = IdType.AUTO)
    private Long id;
    // mybatisplus默认使用驼峰命名规则：如果数据库的字段名有下划线时，实体类的属性名使用驼峰命名规则，
    // 下划线后的第一个字母要大写
    // 如果是关键字，必须使用@TableField `字段名`
    //@TableField("`user_name`")
    private String userName;

    private String password;
    private String name;
    private Integer age;
    private String email;
    /**
     * TableField 表字段的配置
     * value=如果属性名与字段表不一致时使用，类似取别名
     * exist 是否为数据库表字段
     * <p>默认 true 存在，false 不存在</p>
     */
    @TableField(exist = false)
    private String address;

    /**
     * 逻辑删除
     * 有效时的值为value
     * 删除时的值为delval
     */
    @TableLogic(value = "1", delval = "0")
    private int state=1;

    /**
     * fill填充，时机FieldFill.INSERT 添加记录
     *          时机INSERT_UPDATE 添加与更新时都会触发
     * 自定义类实现接口MetaObjectHandler， 注册spring容器中
     */
    @TableField(fill = FieldFill.INSERT)
    private Date created;
    @TableField(fill = FieldFill.INSERT_UPDATE)
    private Date updated;
}